package com.sxj.corejava.code01_基础;

/**
 * @author 石小俊
 * @date 2024年02月29日 19:51
 */
public class Test04_自动类型转换 {

    public static void main(String[] args) {
        // byte、short、char --> int --> long --> float --> double
        byte b1 = 1;
        byte b2 = 50;
        // 在进行运算时,其结果至少使用int来接收
        int result = b1 + b2;
        short s1 = 10;
        result = b1 + s1;
        int i1 = 1000;
        int i2 = 2000;
        result = i1 + i2;
        System.out.println(Math.pow(2, 31));
        int i3 = 2147483647;
        // 此时结果理论上已经超出了int范围
        // 其结果会出现数据溢出
        result = i1 + i3;
        System.out.println(result);
        long l1 = 1000;
        // 当运算的变量中存在long类型,则自动转换成long类型的结果
        // 多个变量运算时,其最大的类型接收
        long result2 = l1 + i3;
        System.out.println(result2);

        float f1 = 3.14f;
        float result3 = l1 + f1;
        double d1 = 3.14;
        double result4 = f1 + d1;
        double result5 = b1 + b2;

        char c1 = 'a';
        int i4 = 1;
        // 当运算的变量中包含char类型的值的时候
        // 会先根据ASCII码将char类型的字符转换成对应的数值再进行运算
        int result6 = c1 + i4;
        System.out.println(result6);
        char c2 = 'A';
        result6 = c2 + i4;
        System.out.println(result6);
    }

}
